﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using GestorDeFlotasDesktop.Classes;
using System.Data.SqlClient;

namespace GestorDeFlotasDesktop.CuentaChofer
{
    public partial class frmCuentaChofer : Form
    {
        public frmCuentaChofer()
        {
            InitializeComponent();
        }

        private void btnCalcular_Click(object sender, EventArgs e)
        {
            SqlDataReader Viajes;
            SqlInterface.Conectar();
           
            List<SqlParameter> Parameters = generarListaParametros();
            try
            {
                Viajes = SqlInterface.ExecuteReader("SQUIRTLE.spCalcularRendicion", CommandType.StoredProcedure, Parameters);
            } catch (SqlException sqlEx) {
                MessageBox.Show(sqlEx.Message);
                SqlInterface.Desconectar();
                return;
            }
            if (Viajes.HasRows)
            {
                Viajes.Read();
                decimal importe = Viajes.GetDecimal(Viajes.GetOrdinal("RENDICION_IMPORTE"));
                txtImporte.Text = "$ " + Convert.ToString(importe);
            }
            else
            {
                MessageBox.Show("No hay viajes en la fecha seleccionada para este chofer.");
                SqlInterface.Desconectar();
                return;
            }
            SqlInterface.Desconectar();
           
            SqlInterface.Conectar();
            Viajes = SqlInterface.ExecuteReader("SQUIRTLE.spObtenerViajesRendicion",
                        CommandType.StoredProcedure, Parameters);
            List<Viaje> lista = new List<Viaje>();
            if (Viajes.HasRows)
            {
                while (Viajes.Read())
                {
                    Viaje oViaje = new Viaje();
                    oViaje.dtmFecha = Viajes.GetDateTime(Viajes.GetOrdinal("VIAJE_FECHA"));
                    oViaje.dblValorBandera = Viajes.GetDecimal(Viajes.GetOrdinal("TURNO_VALORBANDERA"));
                    oViaje.dblValorFicha = Viajes.GetDecimal(Viajes.GetOrdinal("TURNO_VALORFICHA"));
                    oViaje.intCantidadFichas = Viajes.GetInt32(Viajes.GetOrdinal("VIAJE_CANTIDADFICHAS"));

                    lista.Add(oViaje);
                }
            }
            dataGridView1.DataSource = lista;
            SqlInterface.Desconectar();
        }

        private List<SqlParameter> generarListaParametros()
        {
            List<SqlParameter> Parameters = new List<SqlParameter>();
            Parameters.Add(new SqlParameter("@chofer", cmbChofer.SelectedValue));
            Parameters.Add(new SqlParameter("@turno", cmbTurno.SelectedValue));
            Parameters.Add(new SqlParameter("@fecha", Convert.ToString(dtpFecha.Value.Year * 10000 + dtpFecha.Value.Month * 100 + dtpFecha.Value.Day)));
            return Parameters;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            txtImporte.Clear();
            List<Viaje> listaVacia = new List<Viaje>();
            dataGridView1.DataSource = listaVacia;
            dtpFecha.ResetText();
            cmbChofer.SelectedIndex = 0;
            cmbTurno.SelectedIndex = 0;
        }
        private void cargarTurnos()
        {
            SqlInterface.Conectar();
            Turnos oTurnos = new Turnos();
            cmbTurno.DataSource = oTurnos.getTurnosHabilitados();
            cmbTurno.DisplayMember = "strDescripcion";
            cmbTurno.ValueMember = "intCodigo";
            SqlInterface.Desconectar();
        }
        private void cargarChoferes()
        {
            SqlInterface.Conectar();
            Choferes oChoferes = new Choferes();
            cmbChofer.DataSource = oChoferes.getChoferesHabilitados();
            cmbChofer.ValueMember = "intDNI";
            cmbChofer.DisplayMember = "strNombreCompleto";
            SqlInterface.Desconectar();
        }
        private void frmCuentaChofer_Load(object sender, EventArgs e)
        {
            cargarChoferes();
            cargarTurnos();
        }
    }
}